import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_base_widget/code2/second_page.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'first_page.dart';

//静态路由配置
void main() => runApp(MyApp3());

//定义根目录Widget
class MyApp3 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      localizationsDelegates: const [
        //初始化默认的 Material 组件本地化
        GlobalMaterialLocalizations.delegate,
        //初始化默认的 通用 Widget 组件本地化
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      //当前区域，如果为null则使用系统区域一般用于语言切换
      //传入两个参数，语言代码，国家代码
      //这里配制为中国
      locale: const Locale('zh', 'CN'),
      //定义当前应用程序所支持的语言环境
      supportedLocales: const [
        Locale('en', 'US'), // English 英文
        Locale('zh', 'CN'), // 中文
      ],
      routes: {
        //默认页面
        "/": (BuildContext context) => Exam205HomePage(),
      },
    );
  }
}

///代码清单2-10 Scaffold中 AppBar 中配置可滑动的标签
///代码路径 lib/code2/code206_Scaffold_AppBar.dart
class Exam205HomePage extends StatefulWidget {
  @override
  State<Exam205HomePage> createState() => _Exam205HomePageState();
}

class _Exam205HomePageState extends State<Exam205HomePage>
    with SingleTickerProviderStateMixin {
  //控制器 使用 late 关键字来修饰 说明这个变量不为 null
  late TabController _tabController;

  //Tab集合
  List<Tab> tabs = <Tab>[];

  //主体页面的集合
  List<Widget> bodyList = [];

  @override
  void initState() {
    super.initState();
    //初始化Tab 如新闻资讯类型的APP的分类
    tabs = <Tab>[
      Tab(text: "Tab0"),
      Tab(text: "Tab1"),
      Tab(text: "Tab3"),
      Tab(text: "Tab4"),
    ];
    //创建模拟页面 如新闻资讯类型的APP的分类列表
    for (int i = 0; i < tabs.length; i++) {
      bodyList.add(ItemPage(i));
    }
    //initialIndex初始选中第几个
    //[length] 标签的个数
    //[vsync]动画同步依赖
    _tabController =
        TabController(initialIndex: 0, length: tabs.length, vsync: this);
  }

  @override
  Widget build(BuildContext context) {
    //Scaffold 用来搭建页面的主体结构
    return Scaffold(
      //标题
      appBar: AppBar(
        //配置TabBar
        title: Text("这里是标题"),
        //标题居中
        centerTitle: true,
        bottom: TabBar(
          //可以和TabBarView关联使用同一个TabController
          controller: _tabController,
          //子Tab
          tabs: tabs,
          //为false时，标签平均分配宽度，为true时，标签包裹，过多标签，可滑动
          isScrollable: false,
        ),
      ),
      //页面的主内容区
      body: TabBarView(
        //联动控制器
        controller: _tabController,
        //所有的子页面
        children: bodyList,
      ),
    );
  }
}

class ItemPage extends StatelessWidget {
  int index = 0;

  ItemPage(this.index, {Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Center(child: Text("$index"));
  }
}
